package com.premize.grco.presentation.backEndBeans;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;

import com.icesoft.faces.async.render.RenderManager;
import com.icesoft.faces.async.render.Renderable;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.selectinputdate.SelectInputDate;
import com.icesoft.faces.context.DisposableBean;
import com.icesoft.faces.webapp.xmlhttp.FatalRenderingException;
import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
import com.icesoft.faces.webapp.xmlhttp.RenderingException;
import com.icesoft.faces.webapp.xmlhttp.TransientRenderingException;
import com.premize.grco.exceptions.ExceptionMessages;
import com.premize.grco.movil.GrcoCliente;
import com.premize.grco.movil.dto.GrcoClienteDTO;
import com.premize.grco.presentation.businessDelegate.BusinessDelegatorView;
import com.premize.grco.utilities.DataPage;
import com.premize.grco.utilities.DataSource;
import com.premize.grco.utilities.PagedListDataModel;
import com.premize.grco.utilities.Utilities;


/**
*
*
* @author Zathura Code Generator http://code.google.com/p/zathura
*
*/
public class GrcoClienteView extends DataSource implements Renderable,
    DisposableBean {
    private HtmlInputText txtBarrio;
    private HtmlInputText txtCiudad;
    private HtmlInputText txtCodigo;
    private HtmlInputText txtDepartamento;
    private HtmlInputText txtDireccion;
    private HtmlInputText txtEmail;
    private HtmlInputText txtFechaCreacion;
    private HtmlInputText txtIndicadorAutoretenedor;
    private HtmlInputText txtLocalidad;
    private HtmlInputText txtModificadoMovil;
    private HtmlInputText txtNumeroIdentificacion;
    private HtmlInputText txtPais;
    private HtmlInputText txtRazonSocial;
    private HtmlInputText txtTelefono1;
    private HtmlInputText txtTelefono2;
    private HtmlInputText txtTipoIdentificacion;
    private HtmlInputText txtTipoPersoneria;
    private HtmlInputText txtUsuarioCreacion;
    private HtmlInputText txtUsuarioModificacion;
    private HtmlInputText txtConsCliente;
    private SelectInputDate txtFechaModificacion;
    private HtmlCommandButton btnSave;
    private HtmlCommandButton btnModify;
    private HtmlCommandButton btnDelete;
    private HtmlCommandButton btnClear;
    private boolean renderDataTable;
    private boolean flag = true;
    private RenderManager renderManager;
    private PersistentFacesState state = PersistentFacesState.getInstance();
    private List<GrcoCliente> grcoCliente;
    private List<GrcoClienteDTO> grcoClienteDTO;

    public GrcoClienteView() {
        super("");
    }

    public String action_clear() {
        txtBarrio.setValue(null);
        txtBarrio.setDisabled(true);
        txtCiudad.setValue(null);
        txtCiudad.setDisabled(true);
        txtCodigo.setValue(null);
        txtCodigo.setDisabled(true);
        txtDepartamento.setValue(null);
        txtDepartamento.setDisabled(true);
        txtDireccion.setValue(null);
        txtDireccion.setDisabled(true);
        txtEmail.setValue(null);
        txtEmail.setDisabled(true);
        txtFechaCreacion.setValue(null);
        txtFechaCreacion.setDisabled(true);
        txtIndicadorAutoretenedor.setValue(null);
        txtIndicadorAutoretenedor.setDisabled(true);
        txtLocalidad.setValue(null);
        txtLocalidad.setDisabled(true);
        txtModificadoMovil.setValue(null);
        txtModificadoMovil.setDisabled(true);
        txtNumeroIdentificacion.setValue(null);
        txtNumeroIdentificacion.setDisabled(true);
        txtPais.setValue(null);
        txtPais.setDisabled(true);
        txtRazonSocial.setValue(null);
        txtRazonSocial.setDisabled(true);
        txtTelefono1.setValue(null);
        txtTelefono1.setDisabled(true);
        txtTelefono2.setValue(null);
        txtTelefono2.setDisabled(true);
        txtTipoIdentificacion.setValue(null);
        txtTipoIdentificacion.setDisabled(true);
        txtTipoPersoneria.setValue(null);
        txtTipoPersoneria.setDisabled(true);
        txtUsuarioCreacion.setValue(null);
        txtUsuarioCreacion.setDisabled(true);
        txtUsuarioModificacion.setValue(null);
        txtUsuarioModificacion.setDisabled(true);
        txtFechaModificacion.setValue(null);
        txtFechaModificacion.setDisabled(true);
        txtConsCliente.setValue(null);
        txtConsCliente.setDisabled(false);
        btnSave.setDisabled(true);
        btnDelete.setDisabled(true);
        btnModify.setDisabled(true);
        btnClear.setDisabled(false);

        return "";
    }

    public void listener_txtId(ValueChangeEvent event) {
        if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
            GrcoCliente entity = null;

            try {
                Long consCliente = new Long(txtConsCliente.getValue().toString());
                entity = BusinessDelegatorView.getGrcoCliente(consCliente);
            } catch (Exception e) {
                // TODO: handle exception
            }

            if (entity == null) {
                txtBarrio.setDisabled(false);
                txtCiudad.setDisabled(false);
                txtCodigo.setDisabled(false);
                txtDepartamento.setDisabled(false);
                txtDireccion.setDisabled(false);
                txtEmail.setDisabled(false);
                txtFechaCreacion.setDisabled(false);
                txtIndicadorAutoretenedor.setDisabled(false);
                txtLocalidad.setDisabled(false);
                txtModificadoMovil.setDisabled(false);
                txtNumeroIdentificacion.setDisabled(false);
                txtPais.setDisabled(false);
                txtRazonSocial.setDisabled(false);
                txtTelefono1.setDisabled(false);
                txtTelefono2.setDisabled(false);
                txtTipoIdentificacion.setDisabled(false);
                txtTipoPersoneria.setDisabled(false);
                txtUsuarioCreacion.setDisabled(false);
                txtUsuarioModificacion.setDisabled(false);
                txtFechaModificacion.setDisabled(false);
                txtConsCliente.setDisabled(false);
                btnSave.setDisabled(false);
                btnDelete.setDisabled(true);
                btnModify.setDisabled(true);
                btnClear.setDisabled(false);
            } else {
                txtBarrio.setValue(entity.getBarrio());
                txtBarrio.setDisabled(false);
                txtCiudad.setValue(entity.getCiudad());
                txtCiudad.setDisabled(false);
                txtCodigo.setValue(entity.getCodigo());
                txtCodigo.setDisabled(false);
                txtDepartamento.setValue(entity.getDepartamento());
                txtDepartamento.setDisabled(false);
                txtDireccion.setValue(entity.getDireccion());
                txtDireccion.setDisabled(false);
                txtEmail.setValue(entity.getEmail());
                txtEmail.setDisabled(false);
                txtFechaCreacion.setValue(entity.getFechaCreacion());
                txtFechaCreacion.setDisabled(false);
                txtFechaModificacion.setValue(entity.getFechaModificacion());
                txtFechaModificacion.setDisabled(false);
                txtIndicadorAutoretenedor.setValue(entity.getIndicadorAutoretenedor());
                txtIndicadorAutoretenedor.setDisabled(false);
                txtLocalidad.setValue(entity.getLocalidad());
                txtLocalidad.setDisabled(false);
                txtModificadoMovil.setValue(entity.getModificadoMovil());
                txtModificadoMovil.setDisabled(false);
                txtNumeroIdentificacion.setValue(entity.getNumeroIdentificacion());
                txtNumeroIdentificacion.setDisabled(false);
                txtPais.setValue(entity.getPais());
                txtPais.setDisabled(false);
                txtRazonSocial.setValue(entity.getRazonSocial());
                txtRazonSocial.setDisabled(false);
                txtTelefono1.setValue(entity.getTelefono1());
                txtTelefono1.setDisabled(false);
                txtTelefono2.setValue(entity.getTelefono2());
                txtTelefono2.setDisabled(false);
                txtTipoIdentificacion.setValue(entity.getTipoIdentificacion());
                txtTipoIdentificacion.setDisabled(false);
                txtTipoPersoneria.setValue(entity.getTipoPersoneria());
                txtTipoPersoneria.setDisabled(false);
                txtUsuarioCreacion.setValue(entity.getUsuarioCreacion());
                txtUsuarioCreacion.setDisabled(false);
                txtUsuarioModificacion.setValue(entity.getUsuarioModificacion());
                txtUsuarioModificacion.setDisabled(false);
                txtConsCliente.setValue(entity.getConsCliente());
                txtConsCliente.setDisabled(true);
                btnSave.setDisabled(true);
                btnDelete.setDisabled(false);
                btnModify.setDisabled(false);
                btnClear.setDisabled(false);
            }
        }
    }

    public String action_save() {
        try {
            BusinessDelegatorView.saveGrcoCliente((((txtBarrio.getValue()) == null) ||
                (txtBarrio.getValue()).equals("")) ? null
                                                   : new String(
                    txtBarrio.getValue().toString()),
                (((txtCiudad.getValue()) == null) ||
                (txtCiudad.getValue()).equals("")) ? null
                                                   : new Long(
                    txtCiudad.getValue().toString()),
                (((txtCodigo.getValue()) == null) ||
                (txtCodigo.getValue()).equals("")) ? null
                                                   : new String(
                    txtCodigo.getValue().toString()),
                (((txtConsCliente.getValue()) == null) ||
                (txtConsCliente.getValue()).equals("")) ? null
                                                        : new Long(
                    txtConsCliente.getValue().toString()),
                (((txtDepartamento.getValue()) == null) ||
                (txtDepartamento.getValue()).equals("")) ? null
                                                         : new Long(
                    txtDepartamento.getValue().toString()),
                (((txtDireccion.getValue()) == null) ||
                (txtDireccion.getValue()).equals("")) ? null
                                                      : new String(
                    txtDireccion.getValue().toString()),
                (((txtEmail.getValue()) == null) ||
                (txtEmail.getValue()).equals("")) ? null
                                                  : new String(
                    txtEmail.getValue().toString()),
                (((txtFechaCreacion.getValue()) == null) ||
                (txtFechaCreacion.getValue()).equals("")) ? null
                                                          : new String(
                    txtFechaCreacion.getValue().toString()),
                (((txtFechaModificacion.getValue()) == null) ||
                (txtFechaModificacion.getValue()).equals("")) ? null
                                                              : (Date) txtFechaModificacion.getValue(),
                (((txtIndicadorAutoretenedor.getValue()) == null) ||
                (txtIndicadorAutoretenedor.getValue()).equals("")) ? null
                                                                   : new Long(
                    txtIndicadorAutoretenedor.getValue().toString()),
                (((txtLocalidad.getValue()) == null) ||
                (txtLocalidad.getValue()).equals("")) ? null
                                                      : new String(
                    txtLocalidad.getValue().toString()),
                (((txtModificadoMovil.getValue()) == null) ||
                (txtModificadoMovil.getValue()).equals("")) ? null
                                                            : new Long(
                    txtModificadoMovil.getValue().toString()),
                (((txtNumeroIdentificacion.getValue()) == null) ||
                (txtNumeroIdentificacion.getValue()).equals("")) ? null
                                                                 : new String(
                    txtNumeroIdentificacion.getValue().toString()),
                (((txtPais.getValue()) == null) ||
                (txtPais.getValue()).equals("")) ? null
                                                 : new Long(
                    txtPais.getValue().toString()),
                (((txtRazonSocial.getValue()) == null) ||
                (txtRazonSocial.getValue()).equals("")) ? null
                                                        : new String(
                    txtRazonSocial.getValue().toString()),
                (((txtTelefono1.getValue()) == null) ||
                (txtTelefono1.getValue()).equals("")) ? null
                                                      : new String(
                    txtTelefono1.getValue().toString()),
                (((txtTelefono2.getValue()) == null) ||
                (txtTelefono2.getValue()).equals("")) ? null
                                                      : new String(
                    txtTelefono2.getValue().toString()),
                (((txtTipoIdentificacion.getValue()) == null) ||
                (txtTipoIdentificacion.getValue()).equals("")) ? null
                                                               : new Long(
                    txtTipoIdentificacion.getValue().toString()),
                (((txtTipoPersoneria.getValue()) == null) ||
                (txtTipoPersoneria.getValue()).equals("")) ? null
                                                           : new Long(
                    txtTipoPersoneria.getValue().toString()),
                (((txtUsuarioCreacion.getValue()) == null) ||
                (txtUsuarioCreacion.getValue()).equals("")) ? null
                                                            : new String(
                    txtUsuarioCreacion.getValue().toString()),
                (((txtUsuarioModificacion.getValue()) == null) ||
                (txtUsuarioModificacion.getValue()).equals("")) ? null
                                                                : new String(
                    txtUsuarioModificacion.getValue().toString()));
            FacesContext.getCurrentInstance()
                        .addMessage("",
                new FacesMessage(ExceptionMessages.ENTITY_SUCCESFULLYSAVED));
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        action_clear();

        return "";
    }

    public String action_delete() {
        try {
            BusinessDelegatorView.deleteGrcoCliente((((txtConsCliente.getValue()) == null) ||
                (txtConsCliente.getValue()).equals("")) ? null
                                                        : new Long(
                    txtConsCliente.getValue().toString()));
            FacesContext.getCurrentInstance()
                        .addMessage("",
                new FacesMessage(ExceptionMessages.ENTITY_SUCCESFULLYDELETED));
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        action_clear();

        return "";
    }

    public String action_modify() {
        try {
            BusinessDelegatorView.updateGrcoCliente((((txtBarrio.getValue()) == null) ||
                (txtBarrio.getValue()).equals("")) ? null
                                                   : new String(
                    txtBarrio.getValue().toString()),
                (((txtCiudad.getValue()) == null) ||
                (txtCiudad.getValue()).equals("")) ? null
                                                   : new Long(
                    txtCiudad.getValue().toString()),
                (((txtCodigo.getValue()) == null) ||
                (txtCodigo.getValue()).equals("")) ? null
                                                   : new String(
                    txtCodigo.getValue().toString()),
                (((txtConsCliente.getValue()) == null) ||
                (txtConsCliente.getValue()).equals("")) ? null
                                                        : new Long(
                    txtConsCliente.getValue().toString()),
                (((txtDepartamento.getValue()) == null) ||
                (txtDepartamento.getValue()).equals("")) ? null
                                                         : new Long(
                    txtDepartamento.getValue().toString()),
                (((txtDireccion.getValue()) == null) ||
                (txtDireccion.getValue()).equals("")) ? null
                                                      : new String(
                    txtDireccion.getValue().toString()),
                (((txtEmail.getValue()) == null) ||
                (txtEmail.getValue()).equals("")) ? null
                                                  : new String(
                    txtEmail.getValue().toString()),
                (((txtFechaCreacion.getValue()) == null) ||
                (txtFechaCreacion.getValue()).equals("")) ? null
                                                          : new String(
                    txtFechaCreacion.getValue().toString()),
                (((txtFechaModificacion.getValue()) == null) ||
                (txtFechaModificacion.getValue()).equals("")) ? null
                                                              : (Date) txtFechaModificacion.getValue(),
                (((txtIndicadorAutoretenedor.getValue()) == null) ||
                (txtIndicadorAutoretenedor.getValue()).equals("")) ? null
                                                                   : new Long(
                    txtIndicadorAutoretenedor.getValue().toString()),
                (((txtLocalidad.getValue()) == null) ||
                (txtLocalidad.getValue()).equals("")) ? null
                                                      : new String(
                    txtLocalidad.getValue().toString()),
                (((txtModificadoMovil.getValue()) == null) ||
                (txtModificadoMovil.getValue()).equals("")) ? null
                                                            : new Long(
                    txtModificadoMovil.getValue().toString()),
                (((txtNumeroIdentificacion.getValue()) == null) ||
                (txtNumeroIdentificacion.getValue()).equals("")) ? null
                                                                 : new String(
                    txtNumeroIdentificacion.getValue().toString()),
                (((txtPais.getValue()) == null) ||
                (txtPais.getValue()).equals("")) ? null
                                                 : new Long(
                    txtPais.getValue().toString()),
                (((txtRazonSocial.getValue()) == null) ||
                (txtRazonSocial.getValue()).equals("")) ? null
                                                        : new String(
                    txtRazonSocial.getValue().toString()),
                (((txtTelefono1.getValue()) == null) ||
                (txtTelefono1.getValue()).equals("")) ? null
                                                      : new String(
                    txtTelefono1.getValue().toString()),
                (((txtTelefono2.getValue()) == null) ||
                (txtTelefono2.getValue()).equals("")) ? null
                                                      : new String(
                    txtTelefono2.getValue().toString()),
                (((txtTipoIdentificacion.getValue()) == null) ||
                (txtTipoIdentificacion.getValue()).equals("")) ? null
                                                               : new Long(
                    txtTipoIdentificacion.getValue().toString()),
                (((txtTipoPersoneria.getValue()) == null) ||
                (txtTipoPersoneria.getValue()).equals("")) ? null
                                                           : new Long(
                    txtTipoPersoneria.getValue().toString()),
                (((txtUsuarioCreacion.getValue()) == null) ||
                (txtUsuarioCreacion.getValue()).equals("")) ? null
                                                            : new String(
                    txtUsuarioCreacion.getValue().toString()),
                (((txtUsuarioModificacion.getValue()) == null) ||
                (txtUsuarioModificacion.getValue()).equals("")) ? null
                                                                : new String(
                    txtUsuarioModificacion.getValue().toString()));
            FacesContext.getCurrentInstance()
                        .addMessage("",
                new FacesMessage(ExceptionMessages.ENTITY_SUCCESFULLYMODIFIED));
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        action_clear();

        return "";
    }

    public String action_modifyWitDTO(String barrio, Long ciudad,
        String codigo, Long consCliente, Long departamento, String direccion,
        String email, String fechaCreacion, Date fechaModificacion,
        Long indicadorAutoretenedor, String localidad, Long modificadoMovil,
        String numeroIdentificacion, Long pais, String razonSocial,
        String telefono1, String telefono2, Long tipoIdentificacion,
        Long tipoPersoneria, String usuarioCreacion, String usuarioModificacion)
        throws Exception {
        try {
            BusinessDelegatorView.updateGrcoCliente(barrio, ciudad, codigo,
                consCliente, departamento, direccion, email, fechaCreacion,
                fechaModificacion, indicadorAutoretenedor, localidad,
                modificadoMovil, numeroIdentificacion, pais, razonSocial,
                telefono1, telefono2, tipoIdentificacion, tipoPersoneria,
                usuarioCreacion, usuarioModificacion);
            renderManager.getOnDemandRenderer("GrcoClienteView").requestRender();
            FacesContext.getCurrentInstance()
                        .addMessage("",
                new FacesMessage(ExceptionMessages.ENTITY_SUCCESFULLYMODIFIED));
        } catch (Exception e) {
            //renderManager.getOnDemandRenderer("GrcoClienteView").requestRender();
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
            throw e;
        }

        return "";
    }

    public List<GrcoCliente> getGrcoCliente() {
        if (flag) {
            try {
                grcoCliente = BusinessDelegatorView.getGrcoCliente();
                flag = false;
            } catch (Exception e) {
                flag = true;
                FacesContext.getCurrentInstance()
                            .addMessage("", new FacesMessage(e.getMessage()));
            }
        }

        return grcoCliente;
    }

    public boolean isFlag() {
        return flag;
    }

    public void setGrcoCliente(List<GrcoCliente> grcoCliente) {
        this.grcoCliente = grcoCliente;
    }

    public boolean isRenderDataTable() {
        try {
            if (flag) {
                if (BusinessDelegatorView.findTotalNumberGrcoCliente() > 0) {
                    renderDataTable = true;
                } else {
                    renderDataTable = false;
                }
            }

            flag = false;
        } catch (Exception e) {
            renderDataTable = false;
            e.printStackTrace();
        }

        return renderDataTable;
    }

    public DataModel getData() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModel(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<GrcoCliente> getDataPage(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberGrcoCliente = 0;

        try {
            totalNumberGrcoCliente = BusinessDelegatorView.findTotalNumberGrcoCliente()
                                                          .intValue();
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberGrcoCliente) {
            endIndex = totalNumberGrcoCliente;
        }

        try {
            grcoCliente = BusinessDelegatorView.findPageGrcoCliente(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            // Remove this Renderable from the existing render groups.
            //leaveRenderGroups();        			
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        // Add this Renderable to the new render groups.
        //joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate JPA.  If the EntityManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with TopLink JPA, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        //EntityManagerHelper.getEntityManager().clear();
        flag = true;

        return new DataPage<GrcoCliente>(totalNumberGrcoCliente, startRow,
            grcoCliente);
    }

    public DataModel getDataDTO() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModelDTO(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<GrcoClienteDTO> getDataPageDTO(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberGrcoCliente = 0;

        try {
            totalNumberGrcoCliente = BusinessDelegatorView.findTotalNumberGrcoCliente()
                                                          .intValue();
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberGrcoCliente) {
            endIndex = totalNumberGrcoCliente;
        }

        try {
            grcoCliente = BusinessDelegatorView.findPageGrcoCliente(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            if (Utilities.validationsList(grcoCliente)) {
                grcoClienteDTO = new ArrayList<GrcoClienteDTO>();

                for (GrcoCliente grcoClienteTmp : grcoCliente) {
                    GrcoClienteDTO grcoClienteDTO2 = new GrcoClienteDTO();
                    grcoClienteDTO2.setConsCliente(grcoClienteTmp.getConsCliente()
                                                                 .toString());
                    grcoClienteDTO2.setBarrio((grcoClienteTmp.getBarrio() != null)
                        ? grcoClienteTmp.getBarrio().toString() : null);
                    grcoClienteDTO2.setCiudad((grcoClienteTmp.getCiudad() != null)
                        ? grcoClienteTmp.getCiudad().toString() : null);
                    grcoClienteDTO2.setCodigo((grcoClienteTmp.getCodigo() != null)
                        ? grcoClienteTmp.getCodigo().toString() : null);
                    grcoClienteDTO2.setDepartamento((grcoClienteTmp.getDepartamento() != null)
                        ? grcoClienteTmp.getDepartamento().toString() : null);
                    grcoClienteDTO2.setDireccion((grcoClienteTmp.getDireccion() != null)
                        ? grcoClienteTmp.getDireccion().toString() : null);
                    grcoClienteDTO2.setEmail((grcoClienteTmp.getEmail() != null)
                        ? grcoClienteTmp.getEmail().toString() : null);
                    grcoClienteDTO2.setFechaCreacion((grcoClienteTmp.getFechaCreacion() != null)
                        ? grcoClienteTmp.getFechaCreacion().toString() : null);
                    grcoClienteDTO2.setFechaModificacion(grcoClienteTmp.getFechaModificacion());
                    grcoClienteDTO2.setIndicadorAutoretenedor((grcoClienteTmp.getIndicadorAutoretenedor() != null)
                        ? grcoClienteTmp.getIndicadorAutoretenedor().toString()
                        : null);
                    grcoClienteDTO2.setLocalidad((grcoClienteTmp.getLocalidad() != null)
                        ? grcoClienteTmp.getLocalidad().toString() : null);
                    grcoClienteDTO2.setModificadoMovil((grcoClienteTmp.getModificadoMovil() != null)
                        ? grcoClienteTmp.getModificadoMovil().toString() : null);
                    grcoClienteDTO2.setNumeroIdentificacion((grcoClienteTmp.getNumeroIdentificacion() != null)
                        ? grcoClienteTmp.getNumeroIdentificacion().toString()
                        : null);
                    grcoClienteDTO2.setPais((grcoClienteTmp.getPais() != null)
                        ? grcoClienteTmp.getPais().toString() : null);
                    grcoClienteDTO2.setRazonSocial((grcoClienteTmp.getRazonSocial() != null)
                        ? grcoClienteTmp.getRazonSocial().toString() : null);
                    grcoClienteDTO2.setTelefono1((grcoClienteTmp.getTelefono1() != null)
                        ? grcoClienteTmp.getTelefono1().toString() : null);
                    grcoClienteDTO2.setTelefono2((grcoClienteTmp.getTelefono2() != null)
                        ? grcoClienteTmp.getTelefono2().toString() : null);
                    grcoClienteDTO2.setTipoIdentificacion((grcoClienteTmp.getTipoIdentificacion() != null)
                        ? grcoClienteTmp.getTipoIdentificacion().toString() : null);
                    grcoClienteDTO2.setTipoPersoneria((grcoClienteTmp.getTipoPersoneria() != null)
                        ? grcoClienteTmp.getTipoPersoneria().toString() : null);
                    grcoClienteDTO2.setUsuarioCreacion((grcoClienteTmp.getUsuarioCreacion() != null)
                        ? grcoClienteTmp.getUsuarioCreacion().toString() : null);
                    grcoClienteDTO2.setUsuarioModificacion((grcoClienteTmp.getUsuarioModificacion() != null)
                        ? grcoClienteTmp.getUsuarioModificacion().toString()
                        : null);
                    grcoClienteDTO2.setGrcoCliente(grcoClienteTmp);
                    grcoClienteDTO2.setGrcoClienteView(this);
                    grcoClienteDTO.add(grcoClienteDTO2);
                }
            }

            // Remove this Renderable from the existing render groups.
            leaveRenderGroups();
        } catch (Exception e) {
            FacesContext.getCurrentInstance()
                        .addMessage("", new FacesMessage(e.getMessage()));
        }

        // Add this Renderable to the new render groups.
        joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate JPA.  If the EntityManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with TopLink JPA, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        //EntityManagerHelper.getEntityManager().clear();
        flag = true;

        return new DataPage<GrcoClienteDTO>(totalNumberGrcoCliente, startRow,
            grcoClienteDTO);
    }

    protected boolean isDefaultAscending(String sortColumn) {
        return true;
    }

    /**
    * This method is called when a render call is made from the server. Render
    * calls are only made to views containing an updated record. The data is
    * marked as dirty to trigger a fetch of the updated record from the
    * database before rendering takes place.
    */
    public PersistentFacesState getState() {
        onePageDataModel.setDirtyData();

        return state;
    }

    /**
    * This method is called from faces-config.xml with each new session.
    */
    public void setRenderManager(RenderManager renderManager) {
        this.renderManager = renderManager;
    }

    public void renderingException(RenderingException arg0) {
        if (arg0 instanceof TransientRenderingException) {
        } else if (arg0 instanceof FatalRenderingException) {
            // Remove from existing Customer render groups.
            leaveRenderGroups();
        }
    }

    /**
    * Remove this Renderable from existing uiCustomerBeans render groups.
    * OnDemandRenderers are named/created using the underlying Customer Number.
    */
    private void leaveRenderGroups() {
        if (Utilities.validationsList(grcoClienteDTO)) {
            for (GrcoClienteDTO grcoClienteTmp : grcoClienteDTO) {
                renderManager.getOnDemandRenderer("GrcoClienteView").remove(this);
            }
        }
    }

    /**
    * Add this Renderable to the new uiCustomerBeans render groups.
    * OnDemandRenderers are named/created using the underlying Customer Number.
    */
    private void joinRenderGroups() {
        if (Utilities.validationsList(grcoClienteDTO)) {
            for (GrcoClienteDTO grcoClienteTmp : grcoClienteDTO) {
                renderManager.getOnDemandRenderer("GrcoClienteView").add(this);
            }
        }
    }

    public void dispose() throws Exception {
    }

    public RenderManager getRenderManager() {
        return renderManager;
    }

    public void setState(PersistentFacesState state) {
        this.state = state;
    }

    public HtmlInputText getTxtBarrio() {
        return txtBarrio;
    }

    public void setTxtBarrio(HtmlInputText txtBarrio) {
        this.txtBarrio = txtBarrio;
    }

    public HtmlInputText getTxtCiudad() {
        return txtCiudad;
    }

    public void setTxtCiudad(HtmlInputText txtCiudad) {
        this.txtCiudad = txtCiudad;
    }

    public HtmlInputText getTxtCodigo() {
        return txtCodigo;
    }

    public void setTxtCodigo(HtmlInputText txtCodigo) {
        this.txtCodigo = txtCodigo;
    }

    public HtmlInputText getTxtDepartamento() {
        return txtDepartamento;
    }

    public void setTxtDepartamento(HtmlInputText txtDepartamento) {
        this.txtDepartamento = txtDepartamento;
    }

    public HtmlInputText getTxtDireccion() {
        return txtDireccion;
    }

    public void setTxtDireccion(HtmlInputText txtDireccion) {
        this.txtDireccion = txtDireccion;
    }

    public HtmlInputText getTxtEmail() {
        return txtEmail;
    }

    public void setTxtEmail(HtmlInputText txtEmail) {
        this.txtEmail = txtEmail;
    }

    public HtmlInputText getTxtFechaCreacion() {
        return txtFechaCreacion;
    }

    public void setTxtFechaCreacion(HtmlInputText txtFechaCreacion) {
        this.txtFechaCreacion = txtFechaCreacion;
    }

    public HtmlInputText getTxtIndicadorAutoretenedor() {
        return txtIndicadorAutoretenedor;
    }

    public void setTxtIndicadorAutoretenedor(
        HtmlInputText txtIndicadorAutoretenedor) {
        this.txtIndicadorAutoretenedor = txtIndicadorAutoretenedor;
    }

    public HtmlInputText getTxtLocalidad() {
        return txtLocalidad;
    }

    public void setTxtLocalidad(HtmlInputText txtLocalidad) {
        this.txtLocalidad = txtLocalidad;
    }

    public HtmlInputText getTxtModificadoMovil() {
        return txtModificadoMovil;
    }

    public void setTxtModificadoMovil(HtmlInputText txtModificadoMovil) {
        this.txtModificadoMovil = txtModificadoMovil;
    }

    public HtmlInputText getTxtNumeroIdentificacion() {
        return txtNumeroIdentificacion;
    }

    public void setTxtNumeroIdentificacion(
        HtmlInputText txtNumeroIdentificacion) {
        this.txtNumeroIdentificacion = txtNumeroIdentificacion;
    }

    public HtmlInputText getTxtPais() {
        return txtPais;
    }

    public void setTxtPais(HtmlInputText txtPais) {
        this.txtPais = txtPais;
    }

    public HtmlInputText getTxtRazonSocial() {
        return txtRazonSocial;
    }

    public void setTxtRazonSocial(HtmlInputText txtRazonSocial) {
        this.txtRazonSocial = txtRazonSocial;
    }

    public HtmlInputText getTxtTelefono1() {
        return txtTelefono1;
    }

    public void setTxtTelefono1(HtmlInputText txtTelefono1) {
        this.txtTelefono1 = txtTelefono1;
    }

    public HtmlInputText getTxtTelefono2() {
        return txtTelefono2;
    }

    public void setTxtTelefono2(HtmlInputText txtTelefono2) {
        this.txtTelefono2 = txtTelefono2;
    }

    public HtmlInputText getTxtTipoIdentificacion() {
        return txtTipoIdentificacion;
    }

    public void setTxtTipoIdentificacion(HtmlInputText txtTipoIdentificacion) {
        this.txtTipoIdentificacion = txtTipoIdentificacion;
    }

    public HtmlInputText getTxtTipoPersoneria() {
        return txtTipoPersoneria;
    }

    public void setTxtTipoPersoneria(HtmlInputText txtTipoPersoneria) {
        this.txtTipoPersoneria = txtTipoPersoneria;
    }

    public HtmlInputText getTxtUsuarioCreacion() {
        return txtUsuarioCreacion;
    }

    public void setTxtUsuarioCreacion(HtmlInputText txtUsuarioCreacion) {
        this.txtUsuarioCreacion = txtUsuarioCreacion;
    }

    public HtmlInputText getTxtUsuarioModificacion() {
        return txtUsuarioModificacion;
    }

    public void setTxtUsuarioModificacion(HtmlInputText txtUsuarioModificacion) {
        this.txtUsuarioModificacion = txtUsuarioModificacion;
    }

    public SelectInputDate getTxtFechaModificacion() {
        return txtFechaModificacion;
    }

    public void setTxtFechaModificacion(SelectInputDate txtFechaModificacion) {
        this.txtFechaModificacion = txtFechaModificacion;
    }

    public HtmlInputText getTxtConsCliente() {
        return txtConsCliente;
    }

    public void setTxtConsCliente(HtmlInputText txtConsCliente) {
        this.txtConsCliente = txtConsCliente;
    }

    public HtmlCommandButton getBtnSave() {
        return btnSave;
    }

    public void setBtnSave(HtmlCommandButton btnSave) {
        this.btnSave = btnSave;
    }

    public HtmlCommandButton getBtnModify() {
        return btnModify;
    }

    public void setBtnModify(HtmlCommandButton btnModify) {
        this.btnModify = btnModify;
    }

    public HtmlCommandButton getBtnDelete() {
        return btnDelete;
    }

    public void setBtnDelete(HtmlCommandButton btnDelete) {
        this.btnDelete = btnDelete;
    }

    public HtmlCommandButton getBtnClear() {
        return btnClear;
    }

    public void setBtnClear(HtmlCommandButton btnClear) {
        this.btnClear = btnClear;
    }

    public void setRenderDataTable(boolean renderDataTable) {
        this.renderDataTable = renderDataTable;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    public List<GrcoClienteDTO> getGrcoClienteDTO() {
        return grcoClienteDTO;
    }

    public void setGrcoClienteDTO(List<GrcoClienteDTO> grcoClienteDTO) {
        this.grcoClienteDTO = grcoClienteDTO;
    }

    public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }

    /**
    * A special type of JSF DataModel to allow a datatable and datapaginator
    * to page through a large set of data without having to hold the entire
    * set of data in memory at once.
    * Any time a managed bean wants to avoid holding an entire dataset,
    * the managed bean declares this inner class which extends PagedListDataModel
    * and implements the fetchData method. fetchData is called
    * as needed when the table requires data that isn't available in the
    * current data page held by this object.
    * This requires the managed bean (and in general the business
    * method that the managed bean uses) to provide the data wrapped in
    * a DataPage object that provides info on the full size of the dataset.
    */
    private class LocalDataModel extends PagedListDataModel {
        public LocalDataModel(int pageSize) {
            super(pageSize);
        }

        public DataPage<GrcoCliente> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPage(startRow, pageSize);
        }
    }

    private class LocalDataModelDTO extends PagedListDataModel {
        public LocalDataModelDTO(int pageSize) {
            super(pageSize);
        }

        public DataPage<GrcoClienteDTO> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPageDTO(startRow, pageSize);
        }
    }
}
